#include "en_data.h"

en_data::en_data()
{

}

bool en_data::add_param(QString &commond, bool is_string, const QString &str, const int num)
{
	if(commond.isEmpty())
	{
		return false;
	}
	if((is_string && str == NULL))
	{
		return false;
	}

	if(!commond.endsWith('='))
	{
		commond.append(COMMA);// 添加点
	}

	if(is_string)
	{
		commond.append(STRING);
		commond.append(str);
		commond.append(STRING);
	}
	else
	{
		commond.append(QString::number(num));
	}

	return true;
}

bool en_data::add_commond_end(QString & commond)
{
	if(commond.isEmpty())
	{
		return false;
	}

	commond.append(RN_END);

	return true;
}

QString en_data::packet_commond(const char* commond, const char *format,int count,...)
{
	va_list arg_ptr;
	QString at_commond(commond);
	QString temp_str(commond);
	int temp_int;

	va_start(arg_ptr, count);

	if(count != 0)
	{
		at_commond.append(EQUAL);//添加 = 号
		for(unsigned short int i = 0;i<count;i++)
		{
			if(format[i] == 'i')
			{
				temp_int = va_arg(arg_ptr, int);
				//qDebug()<<"temp_int = "<<temp_int;

				add_param(at_commond,false,NULL,temp_int);
			}
			else if(format[i] == 's')
			{
				temp_str = va_arg(arg_ptr, char*);
				//qDebug()<<"temp_str = "<<temp_str;

				add_param(at_commond,true,temp_str,0);
			}
			else
			{
				return "false";
			}
		}
		va_end(arg_ptr);
	}
	add_commond_end(at_commond);
	//qDebug()<<"at_commond = "<<at_commond;

	return at_commond;
}

